package be.ipl.diapero.testUcc;

import static org.junit.Assert.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.junit.Before;
import org.junit.Test;

import be.ipl.diapero.domaine.Joueur;
import be.ipl.diapero.exceptions.ArgumentInvalideException;
import be.ipl.diapero.exceptions.JoueurInexistantException;
import be.ipl.diapero.exceptions.MdpInvalideException;
import be.ipl.diapero.ucc.GestionJoueur;

public class TestGestionJoueur {

	private static GestionJoueur gp;	
	
	@Before
	public void setUp() throws Exception {
		try {
			Context jndi = new InitialContext();
			gp = (GestionJoueur) jndi
					.lookup("ejb:diaperoEAR/diapero/GestionJoueurImpl!be.ipl.diapero.ucc.GestionJoueur");
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	
	// creation
	
	@Test(expected = NullPointerException.class)	
	public void testCreationPseudoVide () throws Exception {
	     this.gp.creerJoueur("", "1234");
	}	
	
	@Test(expected = NullPointerException.class)	
	public void testCreationMdpVide () throws Exception {
	     this.gp.creerJoueur("Alain", "");
	}	
	
	@Test(expected = ArgumentInvalideException.class)	
	public void testCreationPseudoInvalide () throws Exception {
	     this.gp.creerJoueur("*dsd*df", "1234");
	}	
	
	@Test(expected = ArgumentInvalideException.class)	
	public void testCreationMdpInvalide () throws Exception {
	     this.gp.creerJoueur("Alain", "*1234");
	}	
	
	@Test
	public void testCreationValide() throws Exception {
	     assertNotNull(this.gp.creerJoueur("Alain", "1234"));
	}	
	
	@Test
	public void testCreationJoueurExistant() throws Exception {
	     this.gp.creerJoueur("Alain", "1234");
	}	
	
	
	// connexion
	
	@Test(expected = NullPointerException.class)	
	public void testConnexionPseudoVide () throws Exception {
	     this.gp.connexion("", "1234");
	}	
	
	@Test(expected = NullPointerException.class)	
	public void testConnexionMdpVide () throws Exception {
	     this.gp.connexion("Alain", "");
	}	
	
	@Test(expected = ArgumentInvalideException.class)	
	public void testConnexionPseudoInvalide () throws Exception {
	     this.gp.creerJoueur("*dsd*df", "1234");
	}	
	
	@Test(expected = ArgumentInvalideException.class)	
	public void testConnexionMdpInvalide () throws Exception {
	     this.gp.creerJoueur("Alain", "*1234");
	}	
	
	@Test(expected = JoueurInexistantException.class)	
	public void testConnexionJoueurInexistant() throws Exception {
	   assertNull(this.gp.connexion("eric", "1478"));
	}	
	
	@Test(expected = MdpInvalideException.class)	
	public void testConnexionJoueurMdpInvalide() throws Exception {
	   assertNull(this.gp.connexion("eric", "1478"));
	}	
	
	@Test	
	public void testConnexionValide () throws Exception {
	   assertNull(this.gp.connexion("Alain","1234"));
	}	
	
	// rechercher
	
	@Test	
	public void testRechercherJoueurInvalide(){
	   assertNull(this.gp.rechercherJoueur(120));
	}	
	
	@Test	
	public void testRechercherJoueurValide(){
	   assertNotNull(this.gp.rechercherJoueur(0));
	}	
	
	
}
